Micron Document
`:top
A `!Java compiler`! is a `F33f`_`[compiler`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Compiler]`_`f for the `F33f`_`[Java programming language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_(programming_language)]`_`f.

Some Java compilers output optimized `F33f`_`[machine code`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Machine_code]`_`f for a particular hardware/`F33f`_`[operating system`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Operating_system]`_`f combination, called a `*`F33f`_`[domain specific`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computing_platform]`_`f`* `*`F33f`_`[computer system`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computer_system]`_`f`*. An example would be the now discontinued `F33f`_`[GNU Compiler for Java`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=GNU_Compiler_for_Java]`_`f.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]

The most common form of output from a Java compiler is `F33f`_`[Java class files`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_class_file]`_`f containing `F33f`_`[cross-platform`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Cross-platform]`_`f `F33f`_`[intermediate representation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Intermediate_representation]`_`f (IR), called `F33f`_`[Java bytecode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_bytecode]`_`f.`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f]

The `F33f`_`[Java virtual machine`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_virtual_machine]`_`f (JVM) loads the class files and either `F33f`_`[interprets`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Interpreter_(computing)]`_`f the `F33f`_`[bytecode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Bytecode]`_`f or `F33f`_`[just-in-time`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Just-in-time_compilation]`_`f compiles it to `F33f`_`[machine code`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Machine_code]`_`f and then possibly optimizes it using `F33f`_`[dynamic compilation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Dynamic_compilation]`_`f.

A standard on how to interact with Java compilers was specified in `F33f`_`[JSR`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_Specification_Request]`_`f 199.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f]

>>Contents

• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f
• `F0af`_`[External links`#external-links]`_`f

-─

>>See also

• `F33f`_`[List of Java Compilers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=List_of_compilers]`_`f
• `F33f`_`[javac`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Javac]`_`f, the standard Java compiler in Oracle's `F33f`_`[JDK`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_Development_Kit]`_`f

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f "GCJ - past, present, and future". Archived from the original on 2019-08-02. Retrieved 2021-09-24.
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f "The Java Virtual Machine Specification, Java SE 8 Edition, Section 1.2". Archived from the original on 2021-09-24. Retrieved 2021-09-24.
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f "JSR 199: JavaTM Compiler API". Archived from the original on 2021-09-24. Retrieved 2021-09-24.

>>External links

• Sun's OpenJDK javac page
• Stephan Diehl, "A Formal Introduction to the Compilation of Java", `*Software - Practice and Experience`*, Vol. `!28`!(3), pages 297-327, March 1998.

`c`F0af`_`[↑ Back to top`#top]`_`f`a